package com.fqgj.sentry.policy.engine.domain;

import com.fqgj.sentry.policy.engine.domain.enums.PolicyComposeEnum;

import java.io.Serializable;
import java.util.List;

public class PolicySet implements Serializable {
    /**
     * 调用流水号  唯一标识
     */
    private String flowNo;
    /**
     * 商户id
     */
    private Long merchantId;
    /**
     * 应用id
     */
    private Long appId;
    /**
     * 策略集ID
     */
    private Long policySetId;
    /**
     * 执行者ID
     */
    private Long executorId;
    /**
     * 执行者 类型
     */
    private Integer executorType;
    /**
     * 执行者版本
     */
    private String version;
    /**
     * 事件类型ID
     */
    private Long eventId;
    /**
     * 输入变量集
     */
    private VariableMap inputVarMap;
    /**
     * 策略集
     */
    private List<Policy> policySet;
    /**
     * 策略集结果
     */
    private PolicySetResult policySetResult;

    /**
     * 策略组合方式
     */
    private PolicyComposeEnum policyCompose;

    /**
     * 策略为规则组时   优先级最高的结果
     */
    private Decision highPriorityDecision;


    public Decision getHighPriorityDecision() {
        return highPriorityDecision;
    }

    public PolicySet setHighPriorityDecision(Decision highPriorityDecision) {
        this.highPriorityDecision = highPriorityDecision;
        return this;
    }

    public String getVersion() {
        return version;
    }

    public PolicySet setVersion(String version) {
        this.version = version;
        return this;
    }

    public Long getMerchantId() {
        return merchantId;
    }

    public PolicySet setMerchantId(Long merchantId) {
        this.merchantId = merchantId;
        return this;
    }

    public Long getAppId() {
        return appId;
    }

    public PolicySet setAppId(Long appId) {
        this.appId = appId;
        return this;
    }

    public Integer getExecutorType() {
        return executorType;
    }

    public PolicySet setExecutorType(Integer executorType) {
        this.executorType = executorType;
        return this;
    }

    public Long getExecutorId() {
        return executorId;
    }

    public PolicySet setExecutorId(Long executorId) {
        this.executorId = executorId;
        return this;
    }

    public String getFlowNo() {
        return flowNo;
    }

    public PolicySet setFlowNo(String flowNo) {
        this.flowNo = flowNo;
        return this;
    }

    public Long getPolicySetId() {
        return policySetId;
    }

    public PolicySet setPolicySetId(Long policySetId) {
        this.policySetId = policySetId;
        return this;
    }

    public Long getEventId() {
        return eventId;
    }

    public PolicySet setEventId(Long eventId) {
        this.eventId = eventId;
        return this;
    }

    public VariableMap getInputVarMap() {
        return inputVarMap;
    }

    public PolicySet setInputVarMap(VariableMap inputVarMap) {
        this.inputVarMap = inputVarMap;
        return this;
    }

    public List<Policy> getPolicySet() {
        return policySet;
    }

    public PolicySet setPolicySet(List<Policy> policySet) {
        this.policySet = policySet;
        return this;
    }

    public PolicySetResult getPolicySetResult() {
        return policySetResult;
    }

    public PolicySet setPolicySetResult(PolicySetResult policySetResult) {
        this.policySetResult = policySetResult;
        return this;
    }

    public PolicyComposeEnum getPolicyCompose() {
        return policyCompose;
    }

    public PolicySet setPolicyCompose(PolicyComposeEnum policyCompose) {
        this.policyCompose = policyCompose;
        return this;
    }
}
